package j05zuoye;
/*
3，泛型工具类
创建一个ArrayUtils类(数组工具类)。

   (1) ArrayUtils包含一个私有无参构造方法private ArrayUtils()方法

   (2) ArrayUtils包含一个打印**任意对象数组**元素的方法，打印的格式是:  [元素1, 元素2, 元素3, ..., 元素n]

   > 定义一个**泛型方法**，实现打印任意对象类型的数组。

   (3) ArrayUtils包含一个查找**任意对象数组**元素的方法，一个参数是数组，另外一个参数是要找的元素，返回值是元素下标。

   > 定义一个**泛型方法**，参数使用泛型。如果数组中包含多个要查的元素，返回第一个查到的元素的下标，如果没有要查找的 元素，返回-1

   (4) 在com.hualan.main包里创建一个GenericTest类，在类的main方法中测试ArrayUtils中定义的打印数组的方法。

   要求打印Person数组，Cat数组。
 */
class ArrayUtils{
    private ArrayUtils(){}

    public static <K> void printArr(K[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            if(i!= arr.length-1){
                System.out.print(",");
            }
        }
        System.out.println("]");
    }

    public static <T> int indexOf(T[] arr,T t){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==t)return i;
        }
        return -1;
    }
}

class Cat{
    String name;

    public Cat(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}
public class Z3 {
    public static void main(String[] args) {
        ArrayUtils.printArr(new Integer[]{11,44,66,77});
        ArrayUtils.printArr(new String[]{"qq","tt","mm"});
        int pos = ArrayUtils.indexOf(
                new String[]{"aa","dd","tt"},
                "dd"
        );
//        int pos = ArrayUtils.indexOf(
//                new []{"aa","dd","tt"},
//                "dd"
//        );
        System.out.println("pos = " + pos);


        System.out.println("=========");
        ArrayUtils.printArr(
                new Cat[]{
                        new Cat("加菲猫"),
                        new Cat("tom")
                }
        );

    }
}
